package edu.se.jai.lesson03guess1.config;

import edu.se.jai.lesson03guess1.model.entity.GameRoom;
import edu.se.jai.lesson03guess1.model.entity.Player;
import edu.se.jai.lesson03guess1.service.GameService;
import edu.se.jai.lesson03guess1.service.MessageSend;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.event.EventListener;
import org.springframework.messaging.simp.stomp.StompHeaderAccessor;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.messaging.SessionDisconnectEvent;

/**
 * WebSocket事件监听器
 * 
 * 负责处理WebSocket连接事件，包括：
 * - 连接断开时的数据清理
 * - 房间创建者断线时自动解散房间
 * - 普通玩家断线时自动离开房间
 */
@Slf4j
@Component
@RequiredArgsConstructor
public class WebSocketEventListener {

    private final GameService gameService;
    private final MessageSend messageSend;

    /**
     * 处理WebSocket连接断开事件
     * 
     * @param event 连接断开事件
     */
    @EventListener
    public void handleWebSocketDisconnectListener(SessionDisconnectEvent event) {
        StompHeaderAccessor headerAccessor = StompHeaderAccessor.wrap(event.getMessage());
        String sessionId = headerAccessor.getSessionId();
        
        log.info("WebSocket连接断开 - Session ID: {}", sessionId);

        // 1. 获取玩家所在的房间ID
        // 2. 判断玩家是否为房间创建者
        // 3. 如果是创建者：解散房间并发送解散房间消息
        // 3. 如果是参与者：离开房间并发送离开房间消息以及房间内容更新消息

    }

}
